package d3_method_reference;

import com.sun.source.tree.NewArrayTree;

public class Test04 {
    public static void main(String[] args) {
        //目标: 掌握构造器引用
//        Create c1 = new Create() {
//            @Override
//            public Car createCar(String name) {
//                return new Car(name);
//            }
//        };
        //构造器引用
        //类名::引用
        //使用场景:如果Lambda表达式里只是在创建对象, 并且前后参数情况一致,就可以使用构造器引用
//        Create c1 = name-> new Car(name);
        Create c1 = Car::new;//终极简化代码

    }
}

@FunctionalInterface // 函数式接口
interface Create {
    Car createCar(String name);
}

class Car {
    private String name;

    public Car() {
    }

    public Car(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return "Car{" +
                "name='" + name + '\'' +
                '}';
    }
}